package com.gitee.wsl.doc.prosemirror.model.node.ext

import com.gitee.wsl.doc.prosemirror.model.node.Node


/**
 * 检测节点是否为文本块
 *
 * @param side 检测方向："start"从第一个子节点开始，"end"从最后一个子节点开始
 * @param only 是否只允许单一子节点路径
 * @return 如果找到文本块返回true，否则返回false
 */
fun Node.textblockAt(side: TextblockSide, only: Boolean = false): Boolean {
    var scan: Node? = this

    while (scan != null) {
        // 如果当前节点是文本块，返回true
        if (scan.isTextblock) return true

        // 如果设置了only标志且子节点数量不为1，返回false
        if (only && scan.childCount != 1) return false

        // 根据方向移动到下一个节点
        scan = when (side) {
            TextblockSide.start -> scan.firstChild
            TextblockSide.end -> scan.lastChild
        }
    }

    return false
}

enum class TextblockSide{
    start,end
}
